//科目状态---有效
var state_valid = "1";
//科目状态---无效
var state_invalid = "0";

$(function () {
    //1.初始化Table
    var oTable = new TableInit();
    oTable.Init();

    //2.初始化Button的点击事件
    var oButtonInit = new ButtonInit();
    oButtonInit.Init();
});

var TableInit = function () {
    var oTableInit = new Object();
    //初始化Table
    oTableInit.Init = function () {
        $('#tb_table_list').bootstrapTable("destroy");
        $('#tb_table_list').bootstrapTable({
            url: 'subjectController/showSubjectList',           //请求后台的URL（*）
            method: 'get',                                      //请求方式（*）
            toolbar: '#toolbar',                                //工具按钮用哪个容器
            striped: true,                                      //是否显示行间隔色
            cache: false,                                       //是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
            pagination: true,                                   //是否显示分页（*）
            sortable: false,                                    //是否启用排序
            sortOrder: "asc",                                   //排序方式
            queryParams: oTableInit.queryParams,                //传递参数（*）
            sidePagination: "server",                           //分页方式：client客户端分页，server服务端分页（*）
            queryParamsType: "undefined",                       //设置为undefined可以获取pageNumber，pageSize，searchText，sortName，sortOrder
                                                                //设置为limit可以获取limit, offset, search, sort, order
            pageNumber: 1,                                      //初始化加载第一页，默认第一页
            pageSize: 10,                                       //每页的记录行数（*）
            pageList: [10],                                     //可供选择的每页的行数（*）
            search: false,                                      //是否显示表格搜索，此搜索是客户端搜索，不会进服务端，所以，个人感觉意义不大
            strictSearch: true,
            showColumns: false,                                 //是否显示所有的列
            showRefresh: false,                                 //是否显示刷新按钮
            minimumCountColumns: 2,                             //最少允许的列数
            clickToSelect: true,                                //是否启用点击选中行
            height: 550,                                        //行高，如果没有设置height属性，表格自动根据记录条数觉得表格高度
            uniqueId: "ID",                                     //每一行的唯一标识，一般为主键列
            showToggle: false,                                  //是否显示详细视图和列表视图的切换按钮
            cardView: false,                                    //是否显示详细视图
            detailView: false,                                  //是否显示父子表
            columns: [{
                checkbox: true,
                align: 'center'
            }, {
                field: 'subjectName',
                title: '科目',
                align: "center"
            }, {
                field: 'state',
                title: '状态',
                align: 'center',
                formatter: function (value, row, index) {
                    if (row.state == '0') return "<span style='color:#FF3030'>无效</span>";
                    if (row.state == '1') return "<span style='color:#66CD00'>有效</span>";
                }
            }],
            //双击列表行打开查看详细页面
            onDblClickRow: function (row, $element, field) {
                $.post("subjectController/showSubject", {id: row.id}, function (data) {
                    $("#showModalLabel").text("查看科目信息");
                    $("#show_subjectName").val(data["subject"].subjectName);
                    $("#show_remark").val(data["subject"].remark);
                    $(":radio[name='show_state'][value='" + data["subject"].state + "']").prop("checked", "checked");
                    $('#showPage').modal();
                });
            }
        });
    };

    //得到查询的参数
    oTableInit.queryParams = function (params) {
        var temp = {                        //这里的键的名字和控制器的变量名必须一直，这边改动，控制器也需要改成一样的
            currentPage: params.pageNumber,
            PAGE_SIZE: params.pageSize,
            subjectName: $("#txt_search_subjectName").val()
        };
        return temp;
    };
    return oTableInit;
};


var ButtonInit = function () {
    var oInit = new Object();

    oInit.Init = function () {
        <!-- =============================列表查询和重置开始=============================-->
        //列表页面查询
        $("#btn_query").click(function () {
            var oTable = new TableInit();
            oTable.Init();
        });

        //清空查询框内容
        $("#btn_resert").click(function () {
            $("#txt_search_subjectName").val("");
        });
        <!-- =============================列表查询和重置结束=============================-->

        <!-- =============================数据添加、修改、启用和停用开始=============================-->
        //列表页面添加
        $("#btn_add").click(function () {
            $("#addModalLabel").text("新增科目信息");
            $('#addPage').modal();
        });

        //列表页面修改
        $("#btn_edit").click(function () {
            var selectors = $.map($("#tb_table_list").bootstrapTable('getSelections'), function (row) {
                return row.id;
            });
            if (selectors.length == 0) {
                alert("请选择您要修改的科目!");
                return;
            } else if (selectors.length > 1) {
                alert("请您选择一项科目进行修改!");
                return;
            } else {
                $.post("subjectController/showSubject", {id: selectors.toString()}, function (data) {
                    $("#modifyModalLabel").text("修改科目信息");
                    $("#modify_subjectName").val(data["subject"].subjectName);
                    $("#modify_remark").val(data["subject"].remark);
                    $(":radio[name='modify_state'][value='" + data["subject"].state + "']").prop("checked", "checked");
                    $("#id").val(data["subject"].id);
                    $('#modifyPage').modal();
                });
            }
        });

        //列表页面启用
        $("#btn_valid").click(function () {
            var selectors = $.map($("#tb_table_list").bootstrapTable('getSelections'), function (row) {
                return row.id;
            });
            if (selectors.length == 0) {
                alert("请选择您要启用的科目!");
                return;
            }
            $.post("subjectController/updateState", {ids: selectors.toString(), state: state_valid}, function () {
                var oTable = new TableInit();
                oTable.Init();
            });
        });

        //列表页面停用
        $("#btn_invalid").click(function () {
            var selectors = $.map($("#tb_table_list").bootstrapTable('getSelections'), function (row) {
                return row.id;
            });
            if (selectors.length == 0) {
                alert("请选择您要停用的科目!");
                return;
            }
            $.post("subjectController/updateState", {ids: selectors.toString(), state: state_invalid}, function () {
                var oTable = new TableInit();
                oTable.Init();
            });
        });
        <!-- =============================数据添加、修改、启用和停用结束=============================-->

        <!-- =============================新增开始=============================-->
        //添加页面保存按钮
        $("#btn_addSubmit").click(function () {
            $('#add-form').bootstrapValidator('validate');
            var bootstrapValidator = $('#add-form').data('bootstrapValidator');
            //表单验证通过
            if (bootstrapValidator.isValid()) {
                var subjectName = $("#subjectName").val().trim();
                var remark = $("#remark").val().trim();
                $.post("subjectController/checkSubjectName", {subjectName: subjectName}, function (data) {
                    if (data.count != 0) {
                        alert("您所新增的科目名称已存在!");
                    } else {
                        $.post("subjectController/addSubject", {subjectName: subjectName, remark: remark}, function () {
                            var oTable = new TableInit();
                            oTable.Init();
                        });
                        //隐藏弹出添加页面
                        $("#addPage").modal("hide");
                        $("#add-form").bootstrapValidator('resetForm', true);
                    }
                });
            }
        });

        //添加页面关闭按钮
        $('#btn_addClose').click(function () {
            $("#addPage").modal("hide");
            $("#add-form").bootstrapValidator('resetForm', true);
        });
        <!-- =============================新增结束=============================-->

        <!-- =============================修改开始=============================-->
        //修改页面保存按钮
        $("#btn_modifySubmit").click(function () {
            $('#modify-form').bootstrapValidator('validate');
            var bootstrapValidator = $('#modify-form').data('bootstrapValidator');
            //表单验证通过
            if (bootstrapValidator.isValid()) {
                var subjectName = $("#modify_subjectName").val().trim();
                var remark = $("#modify_remark").val().trim();
                var state = $("input[name='modify_state']:checked").val();
                var id = $("#id").val();
                $.post("subjectController/checkSubjectName", {
                    subjectName: subjectName,
                    state: state,
                    remark: remark,
                    id: id
                }, function (data) {
                    if (data.count != 0) {
                        alert("您修改后的科目名称已存在!");
                    } else {
                        $.post("subjectController/updateSubject", {
                            subjectName: subjectName,
                            state: state,
                            remark: remark,
                            id: id
                        }, function () {
                            var oTable = new TableInit();
                            oTable.Init();
                        });
                        //隐藏弹出修改页面
                        $("#modifyPage").modal("hide");
                        $("#modify-form").bootstrapValidator('resetForm', true);
                    }
                });
            }
        });

        //修改页面关闭按钮
        $('#btn_modifyClose').click(function () {
            $("#modifyPage").modal("hide");
            $("#modify-form").bootstrapValidator('resetForm', true);
        });
        <!-- =============================修改结束=============================-->

        <!-- =============================查看开始=============================-->
        //查看页面关闭按钮
        $('#btn_showClose').click(function () {
            $("#showPage").modal("hide");
        });
        <!-- =============================查看结束=============================-->

        <!-- =============================退出登录开始=============================-->
        $("#logout-button").click(function () {
            $.post("loginController/loginOut", {}, function (data) {
                window.location.href = "login.html";
            });
        });
        <!-- =============================退出登录结束=============================-->
    };
    return oInit;
};